feat: add advisory catalog sentinel - #101
Merged
Merged
Conversation
Reviewer's GuideImplements a weekly/manual advisory catalog sentinel workflow and script that safely discovers public provider model listings, runs strictly bounded authenticated completion probes, persists lifecycle state for drift detection, and publishes sanitized JSON/Markdown artifacts and GitHub issues without mutating routing, plus a small client change to optionally disable the reasoning-model max-token floor and corresponding tests and docs. Sequence diagram for authenticated probe using bounded client.callsequenceDiagram
actor GitHubActions
participant catalog_sentinel as catalog_sentinel.probe
participant freellmpool_client as freellmpool.client.call
participant ProviderAPI
GitHubActions->>catalog_sentinel: main argv=["probe", ...]
catalog_sentinel->>catalog_sentinel: load_secret_map
catalog_sentinel->>catalog_sentinel: load_catalog
loop for each selected provider/model
catalog_sentinel->>freellmpool_client: call(provider, model.name, _PING, max_tokens=8, enforce_thinking_floor=False)
freellmpool_client->>ProviderAPI: HTTP completion request
ProviderAPI-->>freellmpool_client: HTTP response
freellmpool_client-->>catalog_sentinel: Reply
catalog_sentinel->>catalog_sentinel: probe_record
end
catalog_sentinel->>GitHubActions: write_outputs report, summary
GitHubActions->>catalog_sentinel: issue-body --report probe.json
catalog_sentinel-->>GitHubActions: write_issue_body probe-issue.md
File-Level Changes
Assessment against linked issues
Possibly linked issues
Tips and commandsInteracting with Sourcery
Customizing Your ExperienceAccess your dashboard to:
Getting Help
|
7 tasks
There was a problem hiding this comment.
Hey - I've left some high level feedback:
- The
scripts/catalog_sentinel.pymodule is quite large and mixes CLI plumbing, HTTP interaction, lifecycle logic, and rendering; consider splitting it into smaller, focused modules undersrc/freellmpool/and importing them from a thin script entrypoint for better reuse and maintainability. - The new
enforce_thinking_floorflag inclient.callis only lightly documented; it may be worth clarifying its semantics in the docstring and type hints (e.g., when callers should disable it and any risks) to avoid accidental misuse in future probe-like call sites. - The sentinel workflow and script both encode numeric bounds (timeouts, max bytes, provider/model limits); consider centralizing these limits in code or configuration so changes don’t require updating multiple places and to keep the operational behavior easier to reason about.
Prompt for AI Agents
Please address the comments from this code review:
## Overall Comments
- The `scripts/catalog_sentinel.py` module is quite large and mixes CLI plumbing, HTTP interaction, lifecycle logic, and rendering; consider splitting it into smaller, focused modules under `src/freellmpool/` and importing them from a thin script entrypoint for better reuse and maintainability.
- The new `enforce_thinking_floor` flag in `client.call` is only lightly documented; it may be worth clarifying its semantics in the docstring and type hints (e.g., when callers should disable it and any risks) to avoid accidental misuse in future probe-like call sites.
- The sentinel workflow and script both encode numeric bounds (timeouts, max bytes, provider/model limits); consider centralizing these limits in code or configuration so changes don’t require updating multiple places and to keep the operational behavior easier to reason about.Help me be more useful! Please click 👍 or 👎 on each comment and I'll use the feedback to improve your reviews.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #67.
What changed
Acceptance mapping
.github/workflows/catalog-sentinel.ymlscripts/catalog_sentinel.pydocs/CATALOG_SENTINEL.mdtests/test_catalog_sentinel.py,tests/test_client.pyVerification
Review gate
Codex Sol 5.6 xhigh approved exact git tree
696d2a0ebd0ba1d1d9df2dace1e79bc40cb92f24with no P0/P1/P2 findings before commit. A separate exact-PR-head xhigh review is required after all GitHub checks pass and before merge.Summary by Sourcery
Introduce an advisory catalog sentinel workflow and bounded completion probes for detecting catalog drift without mutating routing or provider configuration.
New Features:
Enhancements:
CI:
Tests: